const { Follow } = require('../models');
const pool =require('../config/db');


// 创建关注 (简化版)
const create = async (req, res) => {
  try {
    const userId = req.params.userid;
    const  user  = req.user.id;
    // 直接创建关注记录，不进行数据验证和重复检查
    // 添加参数验证
    if (!userId) {
      return res.status(401).json({ error: '被关注用户ID不能为空' });
    }
    if (!user) {
      return res.status(400).json({ error: '用户未登录' });
    }

    const [ follow ] = await pool.execute(
      'INSERT INTO follows (userid,user,created_at) VALUES (?,?,NOW())',
      [userId, user]
    );
    res.status(201).json(follow);
  } catch (error) {
    console.error('关注失败:', error);
    res.status(500).json({ error: '服务器内部错误' });
  }
};

// 取消关注 (简化版)
const remove = async (req, res) => {
  try {
    const user = req.user.id;
    const { userid } = req.params;
    // 直接删除关注记录，不进行数据验证和存在性检查
    const result = await Follow.destroy({
      where: { user: user, userid: Number(userid) }
    });
    res.json({ message: result ? '取消关注成功' : '关注记录不存在' });
  } catch (error) {
    console.error('取消关注失败:', error);
    res.status(500).json({ error: '服务器内部错误' });
  }
};

// 获取粉丝数和关注数统计
const getCounts = async (req, res) => {
  try {
    const user = req.user.id;
    // 并行执行两个计数查询以提高性能
    const [followerCount, followingCount] = await Promise.all([
      Follow.count({ where: { userid: user } }).then(count => String(count)),
      Follow.count({ where: { user: user } }).then(count => String(count))
    ]);
    res.json({ followerCount, followingCount });
  } catch (error) {
    console.error('获取统计数据失败:', error);
    res.status(500).json({ error: '服务器内部错误' });
  }
};

module.exports = {
  create,
  remove,
  getCounts
};